package com.cloud.common.magic_init.handler;

import com.cloud.common.constants.DataTableFields;
import com.cloud.utils.SecurityUtils;
import org.ssssssss.magicapi.modules.db.inteceptor.NamedTableInterceptor;
import org.ssssssss.magicapi.modules.db.model.SqlMode;
import org.ssssssss.magicapi.modules.db.table.NamedTable;

import java.util.Date;

/**
 * 自定义单表API拦截器
 *
 * @author yzj
 */
public class MagicNamedInterceptor implements NamedTableInterceptor {

    /**
     * 执行单表操作之前
     *
     * @param sqlMode
     * @param namedTable
     */
    @Override
    public void preHandle(SqlMode sqlMode, NamedTable namedTable) {
        // 添加数据操作
        if (SqlMode.INSERT.name().equals(sqlMode.name())) {
            // 插入时注入create_by列
            namedTable.column(DataTableFields.deleted, 0);
            namedTable.column(DataTableFields.Magic_CreateBy, SecurityUtils.getUserName());
            namedTable.column(DataTableFields.Magic_CreateTime, new Date());
        }
        // 修改数据操作
        if (SqlMode.UPDATE.name().equals(sqlMode.name())) {
            // 插入时注入create_by列
            namedTable.column(DataTableFields.Magic_UpdateBy, SecurityUtils.getUserName());
            namedTable.column(DataTableFields.Magic_UpdateTime, new Date());
        }
    }

}
